<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="app"></div>
    <template id="root">
     <div>
        <ul>
            <li v-for="(item,index) in list">
                <input type="checkbox" v-check="item.checked" > {{item.name}} 
            </li>
        </ul>
     </div>
     <button @click="checkedAll">全选</button>
     <button @click="uncheckedAll">全不选</button>

    </template>
    <script>
        //创建应用实例
        const app=Vue.createApp({
            template:"#root",
           data(){
            return{
                list: 
                [{ name: "足球", checked: false }, 
                { name: "篮球", checked: false }, 
                { name: "乒乓球", checked: true }]
            }
           },
           directives:{
            check:{
                mounted(el,binding){
                    el.checked=binding.value
                },
                updated(el,binding){
                    el.checked=binding.value
                }
            }
           },
           methods:{
            checkedAll(){
                this.list.forEach(e => {
          e.checked = true
        });
            },
            uncheckedAll(){
                this.list.forEach(e => {
          e.checked = false
        });
            }
           }
        })

      const root=  app.mount("#app")
    </script>
</body>
</html>